iT邦幫忙

2022 iThome 鐵人賽

DAY 4
0
自我挑戰組

用Python學習網路爬蟲30天系列 第 4

[Day4] 從網路取得資料1_HTTP請求

  • 分享至 

  • xImage
  •  

HTTP通訊協定

HTTP通訊協定是一種伺服器和客戶端之間傳送資料的通訊協定,可以向Web伺服器請求所需的HTML網頁。詳細的請求過程如下:

  1. 客戶端要求連線伺服端
  2. 伺服端允許客戶端連線
  3. 客戶端送出HTTP請求訊息,內含Get/Post請求取得伺服端的指定檔案
  4. 伺服端以HTTP回應訊息來回應客戶端的請求,傳回訊息包含請求的檔案內容和標頭資訊

實作練習

用Requests套件送出HTTP請求

  1. 送出GET請求: 這是伺服器要求資源的HTTP請求,使用get()函數
import requests 

r = requests.get("http://www.google.com")
print(r.status_code)
if r.status_code == 200:
    print("請求成功...")
else:
    print("請求失敗...")

https://ithelp.ithome.com.tw/upload/images/20220918/20152180pV2cv6mfkH.png

  1. 送出post請求: 這是以HTML表單送回的請求,使用post()函數
import requests 

post_data = {'name': '陳柔安', 'score': 95}
r = requests.post("http://httpbin.org/post", data=post_data)
print(r.text)

https://ithelp.ithome.com.tw/upload/images/20220918/20152180wNcRwow8G9.png

取得HTTP回應內容

  1. 標籤字串: GET請求取得解碼後的回應內容,再用text屬性取得回應字串、encoding屬性取得使用編碼
import requests

r = requests.get("https://rouan0903.github.io/")

print(r.text)
print(r.encoding)

https://ithelp.ithome.com.tw/upload/images/20220918/20152180GriEdXqZCG.png

  1. 狀態碼: 使用status_code屬性取得
    取得進一步資訊: 使用raise_for_status()函數
import requests 

r = requests.get("http://www.google.com/404")
print(r.status_code)
print(r.status_code == requests.codes.ok)

print(r.raise_for_status())

https://ithelp.ithome.com.tw/upload/images/20220918/20152180IHukcEt1IS.png


上一篇
[Day3] 什麼是網路爬蟲?
下一篇
[Day5] 從網路取得資料2_進階的HTTP請求
系列文
用Python學習網路爬蟲30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言